\chapter {Introduction}

The aim of this project is to build a prototype of a web recommender system which, unlike most recommender systems, will take advantage of Semantic Web data sources on the Internet and provide the user with articles, music and video recommendations.

The project's complexity is believed to be quite high because it requires the integration of many components in a modular way to allow for further extensions in the future and an understanding of many of the Web standards in use nowadays.

Section \ref{sec:Section 1.1} provides a description of the problem that we are trying to solve. Section \ref{sec:Section 1.2} details our thinking and approach on solving the problem giving an overview of the interactions between the modules of the system. Section \ref{sec:Section 1.3} illustrates a simple use-case scenario. Finally, section \ref{sec:Section 1.4} provides a summary of how the report is organised. 
\section{Description of the problem}
\label{sec:Section 1.1}

The web currently counts over 48 billion webpages. The amount of knowledge and data available to everyone is beyond human conception. The sheer size of the web, coupled with the fuzzy human nature, makes it impossible for a human to search, aggregate and analyse all this information; a fact that lead to the design and development of computer software to perform such tasks. 

Many sophisticated search engines exist today and have proven to be indispensable as a way of retrieving information from the Web. Their success however depends greatly on the user's ability to search with the right words. Furthermore, a search engine cannot possibly have an insight on the user's profile, thus the results will only be relevant to the keywords of the search and not the user's character, likes and dislikes.

As a result, a new kind of result retrieval engine has emerged, namely recommender systems. A recommender system builds a profile of the user over time, based on the user's searches and then tailors the results to suit that profile. 

Many recommender systems exist on the Web, but most of them are focused on a specific domain of interest. The main difficulty in building a system that will offer generic recommendations, relies on the fact that the classification of resources on the Internet is based on text analysis instead of their actual semantics and meaning. The Semantic Web or Web 3.0 mitigates, according to Tim Berners-Lee\footnote{The inventor of the World Wide Web.}, this problem by introducing methodologies that will describe the data in a way that a machine will understand. One can simply view this as providing information about the data. 

Our system tries to differentiate itself from other systems, by taking into account the afore mentioned semantic data to provide generic, accurate and relevant recommendations.

\section{Our approach}
\label{sec:Section 1.2}

As our recommender system will be based on semantic data for providing recommendations, we first need to identify sources that our system will use and which offer querying and searching endpoints on such datasets. There are quite a few ongoing efforts on the Internet, mostly community-based, that offer extensive databases describing objects of great variety. Some of these are explored in greater depth in Section~\ref{sec:semanticweb}. We opted for using DBpedia\footnote{DBpedia website: \href{http://www.dbpedia.org}{http://www.dbpedia.org}}  as our semantic source, mostly because of its enormous database and its reliable, from an uninterrupted service point of view, endpoints. 

In building our system we then identified four core modules that would serve as the backbone on which further extensions could be built. They are explained in depth in Chapter 3.

Briefly, these modules comprise of:

\begin{itemize}

\item{A \textbf{profiler} module that will create and update the user's profile. Each profile is separated into a \emph{Static} and a \emph{Dynamic} part. The \emph{Static} part is created once the user first registers and is then updated according to any expressed interest of theirs. We decided on naming this part as such because it is not changed greatly over the course of time. The \emph{Dynamic} part is created after the user has \emph{``liked''} their first recommendation or page on the internet. It then changes continuously as the user gives feedback to the system.}
\item{A \textbf{recommender} module that generates recommendations suited to the user. Recommendations are categorised into two groups based on their source:
	\begin{enumerate}
	\item{ \textbf{User Profile:} Recommendations based on the user's preferences.}
	\item{ \textbf{Network Profile:} Which in turn is split into two sub groups, recommendations based on what the friends of the user like 
	        and selected according to their relevance to the user; recommendations based on the overall trends of the network 
	        which is an aggregation of the most popular topics liked by the system's user-base.}
	\end{enumerate}
 }
\item{A \textbf{feedback} module that will allow the user to \emph{``like''} recommendations given by the system or random pages on the internet by using the bookmarklet.\footnote{A bookmarklet is a very small Javascript program embedded in a bookmark's URL that executes in the currently loaded website when the bookmark is clicked. More information at \href{http://www.bookmarklets.com/about}{http://www.bookmarklets.com/about}.}}
\item{A \textbf{community} module that will create and maintain a social network where users can add and remove friends. The community module will interact with the recommender module to provide recommendations based on what the user's friends like and the overall trends of the whole network.}

\end{itemize}

\begin{figure}[H]
  \includegraphics{resources/interactions.pdf}                
  \caption{Interactions between the modules in the system.}
  \label{graph1}
\end{figure}

\section{Using the system}
\label{sec:Section 1.3}

To further explain and clarify the usage of our system we provide with an overview use-case diagram (see Figure~\ref{fig:usecase}) illustrating the ways a user can interact with the system. We also outline an example use case scenario which covers the four basic uses of the system. The use cases are executed in sequence and each one has two elements; the action performed by the user and the effect of that action on the overall state of the system.  
\begin{itemize}

\item{\textbf{Action: }The user first registers on the website.\\
          \textbf{Effect: }The information they provide are used to create a part of their \emph{Static} profile. Once registered, the user is then prompted to begin adding interests.}
\item{\textbf{Action: }The user expresses an interest.\\ 
          \textbf{Effect: }The system executes a quick search to find out if the interest provided will yield any recommendations. If so, the interest is added in the user's \emph{Static} profile and the user can now view the recommendations.}
\item{\textbf{Action: }The user likes an article and gives feedback to the system.\\
          \textbf{Effect: }This causes the \emph{Dynamic} profile of the user to get modified to reflect the changes resulting from this \emph{``like''} operation. Recommendations will now come from both the \emph{Dynamic} and the \emph{Static} profile.}
\item{\textbf{Action: }The user adds some friends.\\
          \textbf{Effect: }The social graph surrounding the user is updated. Recommendations (if relevant) can now be retrieved from what the user's friends have liked.} 
          
\end{itemize}

\section{Overview of the report}
\label{sec:Section 1.4}

The report is further organised as follows:

\begin{itemize}

\item{ Chapter~\ref{ch2} outlines the Background on such systems and the Semantic Web that proved to be our inspiration in designing our software. }
\item{ Chapter~\ref{ch3}, which is the biggest chapter of the report, gives an in-depth technical analysis of the development process for the system. It covers requirements, planning and methodologies used, technologies we experimented with and a description of each of the four modules that comprise the system.}
\item{ Chapter~\ref{ch4} describes our testing strategies. The system was tested thoroughly in order to become a robust piece of software, that can be extended in the future.}
\item{ Chapter~\ref{ch5}  illustrates an evaluation of our system and a comparison with existing recommender systems. It also features a User Evaluation in which users were asked to test the system and fill a survey form designed by us to obtain a clear picture of how the system performs.}
\item{ Chapter~\ref{ch6} lists any future work that will improve the system and the overall user experience.}
\item{ Finally, in Chapter~\ref{ch7} we discuss the project's success and we reflect on what we have learned while working on the project.}
\end{itemize}

\begin{figure}[H]
  \centering
  \includegraphics{resources/usecase.pdf}                
  \caption{A simple use-case diagram.}
  \label{fig:usecase}
\end{figure}

